/**
 * 
 */
package com.swim.sys.service;

import java.util.List;

import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import com.jeesite.common.config.Global;
import com.jeesite.common.service.CrudService;
import com.jeesite.modules.sys.entity.User;
import com.jeesite.modules.sys.service.UserService;
import com.swim.common.entity.CommonResults;
import com.swim.sys.dao.SysUserRoleDao;
import com.swim.sys.entity.SysUserRole;

/**
 * @description : 用户与角色关联service实现层
 * @author      : 刘军武
 * @version     : 1.0  
 * @create      : 2019年11月15日 上午9:52:05
 **/
@Service
@Transactional(rollbackFor = Exception.class)
public class SysUserRoleService extends CrudService<SysUserRoleDao, SysUserRole> {
	
	
	@Autowired
	private UserService userService;
	
	/**
	 * 根据角色code查询该角色下的所有用户名
	 * @return
	 */
	public List<String> findUserNameByRoleCode(String roleCode) {
		return dao.findUserNameByRoleCode(roleCode);
	}
	
	/**
	 * 根据UserCode查询该用户的所有角色RoleCode
	 * @return
	 */
	public List<String> findRoleCodeByUserCode(String userCode) {
		return dao.findRoleCodeByUserCode(userCode);
	}
	
	/**
	 * 新增
	 * @return
	 */
//	@Transactional(readOnly=false)
	public void insertUserRole(SysUserRole userRole) {
		dao.insertUserRole(userRole);
	}
	
	/**
	 * 修改
	 * @return
	 */
//	@Transactional(readOnly=false)
	public void updateUserRole(SysUserRole userRole) {
		dao.updateUserRole(userRole);
	}
	
	/**
	 * 删除
	 * @return
	 */
	public void deleteUserRole(SysUserRole userRole) {
		dao.deleteUserRole(userRole);
	}
	
	/**
	 * 根据登录的user_code和上级的role_code查询发送审核通知的用户列表
	 * @param userRole
	 * @return List<SysUserRole>
	 */
	public List<SysUserRole> findSendMsgUserCodeList(SysUserRole userRole) {
		return dao.findSendMsgUserCodeList(userRole);
	}
	
	/**
	 * 用户登录时校验账号登录权限
	 * @param loginCode	用户账号
	 * @return CommonResults
	 */
	public CommonResults checkLoginPermissions(String loginCode) {
		CommonResults commonResults = new CommonResults();
		String userCode = "";
		User user = new User();
		user.setLoginCode(loginCode);
		User userOne = userService.getByLoginCode(user);
		if (userOne != null) {
			userCode = userOne.getUserCode();
			List<String> roleCodeList = dao.findRoleCodeByUserCode(userCode);
			if (CollectionUtils.isNotEmpty(roleCodeList)) {
				//系统运营、游泳馆管理员、游泳馆员工角色才允许登录
				if(roleCodeList.contains("syserji") || roleCodeList.contains("natatoriumAdmin") || roleCodeList.contains("natatoriumEmployee")) {
					commonResults.setResult(Global.TRUE);
					commonResults.setMessage("允许登录！");
				} else {
					commonResults.setResult(Global.FALSE);
					commonResults.setMessage("抱歉您的账号无权限登录后台！");
				}
			} else {//账号无角色（超级管理员、客户管理员账号也是没角色的）
				commonResults.setResult(Global.TRUE);
				commonResults.setMessage("允许登录！");
			}
		} else {//账号错误！
			commonResults.setResult(Global.FALSE);
			commonResults.setMessage("账号错误！");
		}
		return commonResults;
	}
}